package protect.week10;

import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/10/26 22:53
 * @package protect.week10
 * @description 1941. 检查是否所有字符出现次数相同
 * 给你一个字符串 s ，如果 s 是一个 好 字符串，请你返回 true ，否则请返回 false 。
 * <p>
 * 如果 s 中出现过的 所有 字符的出现次数 相同 ，那么我们称字符串 s 是 好 字符串。
 * <p>
 *  
 * <p>
 * 示例 1：
 * <p>
 * 输入：s = "abacbc"
 * 输出：true
 * 解释：s 中出现过的字符为 'a'，'b' 和 'c' 。s 中所有字符均出现 2 次。
 * 示例 2：
 * <p>
 * 输入：s = "aaabb"
 * 输出：false
 * 解释：s 中出现过的字符为 'a' 和 'b' 。
 * 'a' 出现了 3 次，'b' 出现了 2 次，两者出现次数不同。
 *  
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/check-if-all-characters-have-equal-number-of-occurrences
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

public class Ch04_AreOccurrencesEqual {
    public static boolean areOccurrencesEqual(String s) {
        HashMap<Character, Integer> wordMap = new HashMap<>();

        for (int i = 0; i < s.length(); i++) {
            char tmp = s.charAt(i);
            if (wordMap.containsKey(tmp)) {
                wordMap.replace(tmp, wordMap.get(tmp) + 1);
            }else {
                wordMap.put(tmp,1);
            }
        }

        Collection<Integer> values = wordMap.values();
        HashSet<Integer> hashSet = new HashSet<>(values);
        return hashSet.size() == 1;
    }

    public static void main(String[] args) {
        System.out.println(areOccurrencesEqual("abacbc"));
    }
}
